.TH std::vector::push_back 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::vector::push_back \- std::vector::push_back

.SH Synopsis
   void push_back( const T& value ); \fB(1)\fP (constexpr since C++20)
   void push_back( T&& value );      \fB(2)\fP \fI(since C++11)\fP
                                         (constexpr since C++20)

   Appends the given element value to the end of the container.

   1) The new element is initialized as a copy of value.
   2) value is moved into the new element.

   If after the operation the new size() is greater than old capacity() a reallocation
   takes place, in which case all iterators (including the end() iterator) and all
   references to the elements are invalidated. Otherwise only the end() iterator is
   invalidated.

.SH Parameters

   value             -            the value of the element to append
.SH Type requirements
   -
   T must meet the requirements of CopyInsertable in order to use overload \fB(1)\fP.
   -
   T must meet the requirements of MoveInsertable in order to use overload \fB(2)\fP.

.SH Return value

   \fI(none)\fP

.SH Complexity

   Amortized constant.

.SH Exceptions

   If an exception is thrown (which can be due to Allocator::allocate() or element
   copy/move constructor/assignment), this function has no effect (strong exception
   guarantee).

   If T's move constructor is not noexcept and T is not CopyInsertable
   into *this, vector will use the throwing move constructor. If it       \fI(since C++11)\fP
   throws, the guarantee is waived and the effects are unspecified.

.SH Notes

   Some implementations throw std::length_error when push_back causes a reallocation
   that exceeds max_size (due to an implicit call to an equivalent of reserve(size() +
   1)).

.SH Example


// Run this code

 #include <iomanip>
 #include <iostream>
 #include <string>
 #include <vector>

 int main()
 {
     std::vector<std::string> letters;

     letters.push_back("abc");
     std::string s{"def"};
     letters.push_back(std::move(s));

     std::cout << "std::vector letters holds: ";
     for (auto&& e : letters)
         std::cout << std::quoted(e) << ' ';

     std::cout << "\\nMoved-from string s holds: " << std::quoted(s) << '\\n';
 }

.SH Possible output:

 std::vector letters holds: "abc" "def"
 Moved-from string s holds: ""

.SH See also

   emplace_back  constructs an element in-place at the end
   \fI(C++11)\fP       \fI(public member function)\fP
   pop_back      removes the last element
                 \fI(public member function)\fP
   back_inserter creates a std::back_insert_iterator of type inferred from the argument
                 \fI(function template)\fP
